1
Il mistero della moneta da dieci centesimi e la realtà dei numeri in virgola mobile
AI017Lesson 3
00:00

L'attrito fondamentale nella fisica computazionale sorge perché i computer rappresentano i numeri reali utilizzando matematica in virgola mobile binaria. A differenza del pensiero umano in base-10 (decimale), l'hardware memorizza i valori in base-2 (binaria). Ciò porta a un astrazione imperfetta: frazioni decimali semplici come 0,1 non possono essere rappresentate con precisione.

1. La realtà dei numeri in virgola mobile

Go fornisce due tipi principali per i numeri reali: float32 e float64. Quando si usa la sintassi di dichiarazione abbreviata come price := 0,0, Go prevede di default float64. Questi tipi sono approssimazioni della realtà, non valori matematici esatti.

0,1 + 0,1 = ?Gopher: "Perché non è 0,2?"0,0001100110011...

2. Il mistero dello 0,1

In base-10, $1/3$ produce un decimale infinito ripetuto ($0,333...$). In base-2, il valore $0,1$ produce un frazione infinita ripetuta. Poiché la memoria del computer è finita, questa frazione viene troncata, causando errori cumulativi. Ad esempio, $0,1 + 0,2$ produce $0,30000000000000004$ invece di esattamente $0,3$.

Avvertimento: Non usare mai == per confrontare numeri in virgola mobile nei circuiti logici, poiché queste piccole discrepanze faranno fallire i confronti.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>